package com.dkd.flow.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.dkd.common.annotation.Excel;
import com.dkd.common.core.domain.BaseEntity;
import com.dkd.flow.emums.FlowOperation;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

import java.util.Date;
import java.util.List;
/**
 * 流程任务对象 e_process_task
 *
 * @author itheima
 * @date 2025-02-27
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class EProcessTask extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * 主键ID
     */
    private Long ID;
    /**
     * 并行任务ID
     */
    @Excel(name = "并行任务ID")
    private Long taskGroupId;
    /**
     * 钉钉代办任务ID
     */
    @Excel(name = "钉钉代办任务ID")
    private String dingtalkTaskId;
    /**
     * 钉钉消息ID
     */
    @Excel(name = "钉钉消息ID")
    private String dingtalkMsgId;
    /**
     * 流程定义
     */
    @Excel(name = "流程定义")
    private Long processDefinitionId;
    /**
     * 流程实例ID
     */
    @Excel(name = "流程实例ID")
    private Long processInstancesId;
    @Excel(name = "记录taskActionType为operation的任务id")
    private Long actionTaskId;

    /**
     * 流程节点
     */
    @Excel(name = "流程节点")
    private String processDesignId;
    /**
     * 处理人
     */
    @Excel(name = "处理人")
    private Long approver;
    @Excel(name = "处理人名字")
    @TableField(exist = false)
    private String approverName;
    /**
     * 原始处理人
     */
    @Excel(name = "原始处理人")
    private Long originalApprover;
    /**
     * 转交人
     */
    @Excel(name = "转交人")
    private Long transferor;
    /**
     * 前一个任务
     */
    @Excel(name = "前一个任务")
    private Long preTaskId;
    /**
     * 来自那个任务退回的
     */
    @Excel(name = "来自那个任务退回的")
    private Long fromBackTaskId;
    /**
     * 来自那个任务转交的
     */
    @Excel(name = "来自那个任务转交的")
    private Long fromTransferTaskId;
    /**
     * 来自那个任务知会的
     */
    @Excel(name = "来自那个任务知会的")
    private Long fromInformedTaskId;
    /**
     * 来自那个任务撤回的
     */
    @Excel(name = "来自那个任务撤回的")
    private Long fromWithdrawTaskId;
    /**
     * 任务类型 0:发起  1:审批  2:抄送
     */
    @Excel(name = "任务类型 0:发起  1:审批  2:抄送")
    private Long taskType;
    /**
     * 任务状态 1:发起申请 2:审批中 3:已审批  4:已拒绝 5:预览  6:已退回 7:已转交 8:已取消,9已撤回
     */
    @Excel(name = "任务状态 1:发起申请 2:审批中 3:已审批  4:已拒绝 5:预览  6:已退回 7:已转交 8:已取消,9已撤回")
    private Long taskStatus;

    private Long taskActionType;


    @TableField(exist = false)
    private Long flowStatus;
    /**
     * 审批方式
     */
    @Excel(name = "审批方式")
    private String approvalMethod;
    /**
     * 流程知会
     */
    @Excel(name = "流程知会")
    private Integer informed;
    /**
     * 流程传阅
     */
    @Excel(name = "流程传阅")
    private Integer circulate;
    /**
     * 是否已读
     */
    @Excel(name = "是否已读")
    @TableField("`read`")
    private Integer read;
    /**
     * 是否重新开始
     */
    @Excel(name = "是否重新开始")
    private Integer restart;
    /**
     * 是否重定位
     */
    @Excel(name = "是否重定位")
    private Integer relocation;
    /**
     * 是否自动审批
     */
    @Excel(name = "是否自动审批")
    private Integer auto;
    /**
     * 捎话
     */
    @Excel(name = "捎话")
    private String takeMsg;
    /**
     * 捎话
     */
    @Excel(name = "审批意见")
    private String remark;
    //表单定义 包含实例里面的表单值，以及当前节点定义 这个不记入数据库
    @TableField(exist = false)
    String json;
    //可显示的操作按钮
    @TableField(exist = false)
    private List<Integer> flowOperationBtnShow;


    //表单值记录 这个和instance里面的formValue是一样的结构，只是结构
    private String  formValue;

}
